import Request from 'luch-request'
import config from '@/config'
import store from '@/store/index.js'
import util from '@/common/js/util.js'
const http = new Request()
// 全局配置
http.setConfig(() => {
	/* config 为默认全局配置*/
	return config.httpConfig;
	// return {
		// baseURL: str,
		// header: {
			// 'a': 1,
			// 'b': 2
		// },
		// timeout: 60000,
	// };
});
// 拦截器
// 请求前
http.interceptors.request.use((e) => { // 可使用async await 做异步操作
	let header = {
		Authorization: ''
	}
	let token = util.getStorage('token') || store.getters.token;
	if(token){
		header.Authorization = token;
	}else{
		if (e.custom.auth) {
		  return Promise.reject(e)
		}
	}
	if(e.method == "GET"){
		let d = e.params;
		let _str = '';
		for(let o in d){
			if(d[o] == ''){
				delete(d[o])
			}
		}
	}
	e.header = {
		...header,
		...e.header,
		// c: 3 // 演示拦截器header加参
	}
	// if (config.custom.loading) {
	//  uni.showLoading()
	// }
	return e
}, config => { // 可使用async await 做异步操作
	return Promise.reject(config)
})

// 请求后拦截
http.interceptors.response.use((response) => {
	/* 对响应成功做点什么 可使用async await 做异步操作*/
	//  if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//    return Promise.reject(response) // return Promise.reject 可使promise状态进入catch
	// if (response.config.custom.verification) { // 演示自定义参数的作用
	//   return response.data
	// }
	if (response.data.code == 200 || response.data.code == 0) {
	} else {
		if(response.data.code == 500){
			uni.showToast({
				icon: 'none',
				mask: true,
				title: response.data.msg,
				duration: 2000
			});
		}else if(response.data.code == 8848){
			if(store.getters.token == ''){
				return response.data;
			}
			// uni.showToast({
			// 	icon: 'none',
			// 	title: 'token错误，刷新中',
			// 	duration: 2000,
			// });
			// store.dispatch('logOut');
			// store.dispatch('login');
		}else{
			if(!response.data.code){
				return response.data;
			}
			uni.showToast({
				icon: 'none',
				mask: true,
				title: '服务器开小差了',
				duration: 2000
			});
		}
		return response.data;
	}
	return response.data
}, (error) => {
	/*  对响应错误做点什么 （statusCode !== 200）*/
	uni.showToast({
		icon: 'none',
		mask: true,
		title: '服务器开小差了',
		duration: 2000
	})
	return Promise.reject(error)
})

export default http
